LCX Package Format
An .LCX file is a standard ZIP archive containing everything needed to install and configure a game through LANCommander. The Packager generates this format automatically, but understanding its structure is useful for troubleshooting or manual editing.
Archive Structure
package.lcx (ZIP)
├── Manifest.yml # Game metadata (YAML)
├── Archives/
│ └── {guid} # Inner ZIP containing game files
└── Scripts/
├── {guid} # Install script (PowerShell)
└── {guid} # Uninstall script (PowerShell)
Manifest.yml
The name is matched case sensitively, so it must be spelled exactly Manifest.yml.
The manifest is a YAML file describing the game's metadata, actions, archive references, and script references. It follows the LANCommander SDK's Game manifest schema and includes:
- Title, Sort Title, Version, Description, Notes - basic metadata
- Released On, Singleplayer - classification
- Directory Name - the expected install directory name
- Actions - launch configurations (name, executable path, arguments, primary flag)
- Archives - references to inner archive entries with compressed/uncompressed sizes
- Scripts - references to script entries with type (Install/Uninstall) and admin requirements
Archives
The Archives/ directory contains one or more inner ZIP files, each identified by a GUID. The inner archive holds the game files with paths relative to the install directory root.
Scripts
The Scripts/ directory contains PowerShell scripts identified by GUID. The Packager generates up to two scripts:
Install Script - Recreates registry keys and values captured during monitoring. If the Patch GameSpy option was enabled, it also includes an Edit-PatchGameSpy call. Scripts assume $InstallDirectory is available in the execution environment (provided by the launcher's PowerShell runtime).
Uninstall Script - Removes the registry keys and values that were created by the install script.
Importing into LANCommander
.LCX packages can be imported directly through the LANCommander server's web interface. The server reads the manifest, extracts the archive and scripts, and creates the corresponding game entry with all metadata, actions, and scripts pre-configured.
Manifest.yml Schema
Manifest.yml doesn't have an explicit field indicating which of the four package kinds it is — the server infers it from the manifest's shape (e.g. a Title identifies a Game, a Name + OptionSchema identifies a Redistributable). Each kind has its own JSON Schema, generated directly from the LANCommander SDK's manifest models and published alongside every release:
https://docs.lancommander.app/schemas/<version>/Game.schema.jsonhttps://docs.lancommander.app/schemas/<version>/Redistributable.schema.jsonhttps://docs.lancommander.app/schemas/<version>/Server.schema.jsonhttps://docs.lancommander.app/schemas/<version>/Tool.schema.json
<version> matches a release tag (e.g. 2.1.16), or use latest for the newest stable release. Each schema is fully self-contained (embedded $defs for all referenced types, including cross-referenced package kinds), so it can be dropped into an editor or handed to an AI tool to validate or generate a Manifest.yml without resolving any external files.
Every Manifest.yml generated by the server or the Packager now embeds a $schema field as its first line, pointing at the schema for the version of LANCommander that produced it:
$schema: https://docs.lancommander.app/schemas/2.1.16/Game.schema.json
This both identifies the package kind (via the schema's file name) and lets tooling validate a manifest against the exact schema version it was generated with, which is useful when importing manifests that were created by an older or newer release than the server doing the import.